package com.example.supermarket.service;

import com.example.supermarket.model.ShoppingCart;
import java.math.BigDecimal;

/**
 * 价格计算服务接口
 */
public interface PriceCalculatorService {
    
    /**
     * 计算顾客A的购物总价（只有苹果和草莓）
     * @param appleQuantity 苹果购买数量（斤）
     * @param strawberryQuantity 草莓购买数量（斤）
     * @return 总价
     */
    BigDecimal calculatePriceForCustomerA(int appleQuantity, int strawberryQuantity);
    
    /**
     * 计算顾客B的购物总价（苹果、草莓和芒果）
     * @param appleQuantity 苹果购买数量（斤）
     * @param strawberryQuantity 草莓购买数量（斤）
     * @param mangoQuantity 芒果购买数量（斤）
     * @return 总价
     */
    BigDecimal calculatePriceForCustomerB(int appleQuantity, int strawberryQuantity, int mangoQuantity);
    
    /**
     * 计算顾客C的购物总价（苹果、草莓（8折）和芒果）
     * @param appleQuantity 苹果购买数量（斤）
     * @param strawberryQuantity 草莓购买数量（斤）
     * @param mangoQuantity 芒果购买数量（斤）
     * @return 总价
     */
    BigDecimal calculatePriceForCustomerC(int appleQuantity, int strawberryQuantity, int mangoQuantity);
    
    /**
     * 计算顾客D的购物总价（苹果、草莓（8折）和芒果，满100减10）
     * @param appleQuantity 苹果购买数量（斤）
     * @param strawberryQuantity 草莓购买数量（斤）
     * @param mangoQuantity 芒果购买数量（斤）
     * @return 总价
     */
    BigDecimal calculatePriceForCustomerD(int appleQuantity, int strawberryQuantity, int mangoQuantity);
    
    /**
     * 计算购物车中所有商品的总价
     * @param cart 购物车
     * @param isStrawberryOnSale 草莓是否打折
     * @param isFullReductionApplied 是否应用满减
     * @return 总价
     */
    BigDecimal calculateTotalPrice(ShoppingCart cart, boolean isStrawberryOnSale, boolean isFullReductionApplied);
}